#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
int fa[10010];
int getfa(int x){//得到各位数字的平方和
	int sum=0;
	while(x){
		sum=sum+(x%10)*(x%10);
		x=x/10;}
	return sum;
}
int find_root(int x){//找到最终指向的根如果这个数是幸福数，则最终一定会指到1，1的根就是自己
	int ans=x;
	int i=0;
	while(fa[ans]!=ans)
	{
		ans=fa[ans];
		i++;
		if(i>=10000)
		return -1;
	}
	return ans;
}
bool fun(int x,int n,int m)//判断nm范围内否有数字指向x，即判断是否独立
{
	for(int i=n;i<=m;i++)
		if(fa[i]==x)
			return false;
	return true;
}
bool sushu(int x){//判断素数
	for(int i=2;i*i<=x;i++)
		if(x%i==0)
			return false;
	return true;
}
int main(){
	int n,m;
	cin>>n>>m;
	int c=0;
	for(int i=1;i<=10000;i++)//初始化令所有数字先指向自己 
		fa[i]=i;
	for(int i=1;i<=10000;i++)//令所有数字指向自己的各位平方和
		fa[i]=getfa(i);
	for(int i=n;i<=m;i++)
	{
		if(fun(i,n,m)&&find_root(i)==1)//如果找根能找到1，而且n到m没有数字指向它，就是特立独行的幸福数
		{	
			cout<<i<<" ";
			int flag=1,x=i;
			while(getfa(x)!=1)//计算迭代次数
			{
				x=getfa(x);
				flag++; 
			}
			if(sushu(i))flag*=2;
			cout<<flag<<endl;		
			c++;//记录输出了多少个特立独行的幸福数
		}	
	}
	if(c==0)
	cout<<"SAD"<<endl; 
	return 0;
}






